First in, first out (FIFO) queues are commonly used to organize and control data relative to time and prioritization. In a FIFO queue, data is output in the order in which it is received, so that the first data unit that enters the queue is the first data unit to be output from the queue.
FIFO queues may be particularly useful in controlling data transfer across two different clock domains. In such a FIFO queue, data reads and writes are asynchronous with respect to one another and are initiated using separate write and read signals, which may be launched in separate clock domains. In such a system, errors in the operation of the FIFO queue may occur for a number of reasons, such as: timing issues in the read and write pointers, not enough pointer separation, and/or insufficient depth of the FIFO queue (i.e., overflow and under-run errors).